![New axobject-query Maintainer Faces Backlash Over Controversial Decision to Support Legacy Node.js Versions](https://cdn.sanity.io/images/cgdhsj6q/production/86e6ebdea652d20da070ebbda20134b839972db7-1024x1024.webp?w=800&fit=max&auto=format)
Security News
New axobject-query Maintainer Faces Backlash Over Controversial Decision to Support Legacy Node.js Versions
A JavaScript library maintainer is under fire after merging a controversial PR to support legacy versions of Node.js.
loglevel-plugin-prefix
Advanced tools
Readme
Plugin for loglevel message prefixing
npm install loglevel-plugin-prefix --save
apply(log[, options]);
This method applies the plugin to the logger.
log - root logger, imported from loglevel package
options - configuration object
var defaults = {
template: '[%t] %l:',
timestampFormatter: function (date) {
return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1');
},
levelFormatter: function (level) {
return level.toUpperCase();
},
nameFormatter: function (name) {
return name || 'root';
}
};
Plugin formats the prefix using template option as a printf-like format.
The template is a string containing zero or more placeholder tokens. Each placeholder token is replaced with the value from loglevel messages parameters. Supported placeholders are:
The timestampFormatter, levelFormatter and nameFormatter is a functions for formatting corresponding values
disable();
This method cancels the effect of the plugin.
<script src="https://unpkg.com/loglevel/dist/loglevel.min.js"></script>
<script src="https://unpkg.com/loglevel-plugin-prefix/dist/loglevel-plugin-prefix.min.js"></script>
<script>
var logger = log.noConflict();
var prefixer = prefix.noConflict();
prefixer.apply(logger);
logger.warn('prefixed message');
</script>
Output
[16:53:46] WARN: prefixed message
import log from 'loglevel';
import prefix from 'loglevel-plugin-prefix';
prefix.apply(log);
log.warn('prefixed message');
var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');
prefix.apply(log);
log.warn('prefixed message');
define(['loglevel', 'loglevel-plugin-prefix'], function(log, prefix) {
prefix.apply(log);
log.warn('prefixed message');
});
var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');
prefix.apply(log, {
template: '[%t] %l (%n) static text:',
timestampFormatter: function (date) { return date.toISOString() },
levelFormatter: function (level) { return level.charAt(0).toUpperCase() + level.substr(1) },
nameFormatter: function (name) { return name || 'global' }
});
log.warn('prefixed message');
Output
[2017-05-29T12:53:46.000Z] Warn (global) static text: prefixed message
// moduleA.js
var log = require('loglevel');
module.exports = function () {
log.warn('message from moduleA');
}
// moduleB.js
var log = require('loglevel');
var logger = log.getLogger('moduleB');
module.exports = function () {
logger.warn('message from moduleB');
}
// moduleC.js
var log = require('loglevel');
module.exports = function () {
var logger = log.getLogger('moduleC');
logger.warn('message from moduleC');
}
// main.js
var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');
var a = require('./moduleA');
var b = require('./moduleB');
var c = require('./moduleC');
log.warn('message from root %s prefixing', 'before');
prefix.apply(log, { template: '[%t] %l (%n):' });
log.warn('message from root %s prefixing', 'after');
a();
b();
c();
prefix.apply(log, {
template: '[%t] %l:',
timestampFormatter: function (date) { return date.toISOString() }
});
log.warn('message from root after reapplying');
prefix.disable();
log.warn('message from root after disabling');
Output
message from root before prefixing
[16:53:46] WARN (root): message from root after prefixing
[16:53:46] WARN (root): message from moduleA
message from moduleB
[16:53:46] WARN (moduleC): message from moduleC
[2017-05-29T12:53:46.000Z] WARN: message from root after reapplying
message from root after disabling
var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');
var mock = require('loglevel-plugin-mock');
log.enableAll();
prefix.apply(log);
log.info('message from root after prefixing');
prefix.apply(log, { timestampFormatter: function (date) { return date.toISOString() } });
log.info('message from root after pre-prefixing');
mock.apply(log);
try {
prefix.apply(log, { template: '[%t] %l (%n):' });
} catch(e) {
log.error(e);
};
try {
prefix.disable();
} catch(e) {
log.error(e);
};
mock.disable();
var logger = log.getLogger('child');
try {
prefix.apply(logger, { template: '[%t] %l (%n):' });
} catch(e) {
logger.error(e);
};
logger.info('message from child logger');
Output
[16:53:46] INFO: message from root after prefixing
[2017-05-29T12:53:46.000Z] INFO: message from root after pre-prefixing
[2017-05-29T12:53:46.000Z] ERROR: Error: You can't reassign a plugin after appling another plugin
[2017-05-29T12:53:46.000Z] ERROR: Error: You can't disable a plugin after appling another plugin
[2017-05-29T12:53:46.000Z] ERROR: TypeError: Argument is not a root loglevel object
[2017-05-29T12:53:46.000Z] INFO: message from child logger
FAQs
Plugin for loglevel message prefixing
The npm package loglevel-plugin-prefix receives a total of 917,603 weekly downloads. As such, loglevel-plugin-prefix popularity was classified as popular.
We found that loglevel-plugin-prefix demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A JavaScript library maintainer is under fire after merging a controversial PR to support legacy versions of Node.js.
Security News
Results from the 2023 State of JavaScript Survey highlight key trends, including Vite's dominance, rising TypeScript adoption, and the enduring popularity of React. Discover more insights on developer preferences and technology usage.
Security News
The US Justice Department has penalized two consulting firms $11.3 million for failing to meet cybersecurity requirements on federally funded projects, emphasizing strict enforcement to protect sensitive government data.